package com.zelix;

import java.io.*;
import java.util.Hashtable;
import java.util.Vector;

public abstract class is extends hs
    implements Comparable
{

    static final Hashtable d;
    int e;
    jm f;
    public static int h;
//    public static boolean g;
    private static String z[];

    public is(int i1, jm jm1)
    {
        e = i1;
        f = jm1;
    }

    public static String a(String s, Hashtable hashtable)
    {
        int i1;
        int k1;
        k1 = gj.l;
        i1 = 0;
        if(k1 == 0) goto _L2; else goto _L1
_L1:
        int j1 = s.indexOf(';', i1);
        if(j1 == -1)
            break; /* Loop/switch isn't completed */
        String s1 = s.substring(i1 + 1, j1);
        String s2 = (String)hashtable.get(s1);
        if(s2 != null)
        {
            s = s.substring(0, i1 + 1) + s2 + s.substring(j1);
            j1 = (j1 + s2.length()) - s1.length();
        }
        i1 = j1;
_L2:
        if((i1 = s.indexOf('L', i1)) != -1) goto _L1; else goto _L3
_L3:
        return s;
    }

    public int compareTo(Object obj)
    {
        is is1 = (is)obj;
        if(e < is1.e)
            return -1;
        return e != is1.e ? 1 : 0;
    }

    public static Vector b(String s)
    {
        return a(s, false);
    }

    public static Vector a(String s, boolean flag)
    {
        String s1;
        Vector vector;
        int k1;
        k1 = gj.l;
        s1 = dp.a(s);
        if(flag && (s1.length() < 2 || s1.charAt(0) != '(' || s1.charAt(s1.length() - 1) != ')'))
            return null;
        s1 = s1.substring(1, s1.indexOf(')'));
        vector = new Vector();
        if(k1 == 0) goto _L2; else goto _L1
_L1:
        int i1 = 0;
        if(k1 == 0) goto _L4; else goto _L3
_L3:
        i1++;
_L4:
        if(s1.charAt(i1) == '[') goto _L3; else goto _L5
_L5:
        int j1;
        if(s1.charAt(i1) == 'L')
        {
            j1 = s1.indexOf(';');
            if(flag && (j1 == -1 || j1 == i1 + 1))
                return null;
        } else
        {
            j1 = i1;
        }
        String s2 = s1.substring(0, j1 + 1);
        vector.addElement(s2);
        if(flag && s2.length() == 1 && d.get(s2) == null)
            return null;
        if(j1 == s1.length() - 1)
        {
            s1 = "";
            if(k1 == 0)
                continue; /* Loop/switch isn't completed */
        }
        s1 = s1.substring(j1 + 1);
_L2:
        if(s1.length() != 0) goto _L1; else goto _L6
_L6:
        return vector;
    }

    byte[] f()
    {
        ByteArrayOutputStream bytearrayoutputstream = new ByteArrayOutputStream();
        DataOutputStream dataoutputstream = new DataOutputStream(bytearrayoutputstream);
        try
        {
            a(dataoutputstream);
        }
        catch(IOException _ex) { }
        return bytearrayoutputstream.toByteArray();
    }

    public final String c()
    {
        return f.a();
    }

    public static is a(int i1, jb jb, lm lm)
        throws IOException, dc
    {
        int j1 = jb.readUnsignedByte();
        switch(j1)
        {
        case 1: // '\001'
            return new zs(i1, jb, lm);

        case 3: // '\003'
            return new os(i1, jb, lm);

        case 4: // '\004'
            return new ns(i1, jb, lm);

        case 5: // '\005'
            return new qs(i1, jb, lm);

        case 6: // '\006'
            return new ms(i1, jb, lm);

        case 7: // '\007'
            return new ls(i1, jb, lm);

        case 8: // '\b'
            return new ft(i1, jb, lm);

        case 9: // '\t'
            return new bt(i1, jb, lm);

        case 10: // '\n'
            return new dt(i1, jb, lm);

        case 11: // '\013'
            return new ct(i1, jb, lm);

        case 12: // '\f'
            return new et(i1, jb, lm);

        case 2: // '\002'
        default:
            throw new dc(z[3] + lm.b() + z[1] + j1 + z[0] + i1 + z[2]);
        }
    }

    public String h()
    {
        return "";
    }

    public static Vector c(String s)
    {
        Vector vector;
        int i1;
        int j1;
        int k1;
        k1 = gj.l;
        vector = b(s);
        i1 = vector.size();
        j1 = 0;
        if(k1 == 0) goto _L2; else goto _L1
_L1:
        String s1 = (String)vector.elementAt(j1);
        vector.setElementAt(e(s1), j1);
        j1++;
_L2:
        if(j1 < i1) goto _L1; else goto _L3
_L3:
        vector;
        if(vh.e != 0)
            gj.l = ++k1;
        return;
    }

    public static is a(int i1, jb jb, jm jm1)
        throws IOException, dc
    {
        int j1 = jb.readUnsignedByte();
        switch(j1)
        {
        case 1: // '\001'
            return new zs(i1, jb, jm1);

        case 3: // '\003'
            return os.b(i1, jb, jm1);

        case 4: // '\004'
            return ns.b(i1, jb, jm1);

        case 5: // '\005'
            return qs.b(i1, jb, jm1);

        case 6: // '\006'
            return ms.b(i1, jb, jm1);

        case 7: // '\007'
            return new ls(i1, jb, jm1);

        case 8: // '\b'
            return ys.b(i1, jb, jm1);

        case 9: // '\t'
            return rs.b(i1, jb, jm1);

        case 10: // '\n'
            return rs.b(i1, jb, jm1);

        case 11: // '\013'
            return rs.b(i1, jb, jm1);

        case 12: // '\f'
            return ws.b(i1, jb, jm1);

        case 2: // '\002'
        default:
            throw new dc(z[3] + jm1.b() + z[1] + j1 + z[0] + i1 + z[2]);
        }
    }

    int i()
    {
        return 1;
    }

    public final int j()
    {
        return e;
    }

    public static String d(String s)
    {
        String s1 = dp.a(s);
        return s.substring(s1.length());
    }

    public String k()
    {
        return h();
    }

    public abstract int l();

    public static String e(String s)
    {
        return a(s, false, true);
    }

    public static String b(String s, boolean flag)
    {
        return a(s, flag, true);
    }

    public static String a(String s, boolean flag, boolean flag1)
    {
        String s1;
        int i1;
        int j1;
        int l1;
        l1 = gj.l;
        s1 = s;
        String s2 = dp.a(s);
        s1 = s1.substring(s2.length());
        i1 = 0;
        j1 = 0;
        if(l1 == 0) goto _L2; else goto _L1
_L1:
        int i2 = vh.e;
        vh.e = ++i2;
_L4:
        if(s1.charAt(j1) != '[')
            break; /* Loop/switch isn't completed */
        i1++;
        j1++;
_L2:
        if(j1 < s1.length()) goto _L4; else goto _L3
_L3:
        int k1;
label0:
        {
            s1 = s1.substring(i1);
            if(s1.charAt(0) == 'L')
            {
                if(flag && (s1.length() <= 2 || s1.charAt(s1.length() - 1) != ';'))
                    return null;
                s1 = s1.substring(1, s1.length() - 1);
                if(!flag1)
                    break label0;
                s1 = s1.replace('/', '.');
                if(l1 == 0)
                    break label0;
            }
            String s3 = (String)d.get(String.valueOf(s1.charAt(0)));
            if(flag && s3 == null)
                return null;
            s1 = s3;
        }
        k1 = 0;
        if(l1 == 0) goto _L6; else goto _L5
_L5:
        s1 = s1 + z[4];
        k1++;
_L6:
        if(k1 >= i1)
            return s1;
        if(true) goto _L5; else goto _L7
_L7:
    }

    public static boolean f(String s)
    {
        String s1;
        int k1;
        k1 = gj.l;
        if(s.length() < 2 || s.charAt(0) != '(' || s.indexOf(")") == -1)
            return false;
        if(s.indexOf(",") > -1 || s.indexOf("]") > -1 || s.indexOf(" ") > -1)
            return false;
        s1 = s.substring(1, s.lastIndexOf(")"));
        if(s.lastIndexOf(")") >= s.length() - 1) goto _L2; else goto _L1
_L1:
        s1 = s1 + s.substring(s.lastIndexOf(")") + 1);
        if(k1 == 0) goto _L2; else goto _L3
_L3:
        int i1 = 0;
        if(k1 == 0) goto _L5; else goto _L4
_L4:
        i1++;
_L5:
        if(s1.charAt(i1) == '[') goto _L4; else goto _L6
_L6:
        int j1;
        if(s1.charAt(i1) == 'L')
        {
            j1 = s1.indexOf(';');
            if(j1 == -1 || j1 == i1 + 1)
                return false;
        } else
        {
            j1 = i1;
        }
        String s2 = s1.substring(0, j1 + 1);
        if(s2.length() == 1 && d.get(s2) == null)
            return false;
        if(j1 == s1.length() - 1)
        {
            s1 = "";
            if(k1 == 0)
                continue; /* Loop/switch isn't completed */
        }
        s1 = s1.substring(j1 + 1);
_L2:
        if(s1.length() != 0) goto _L3; else goto _L7
_L7:
        return true;
    }

    public final void a(int i1)
    {
        e = i1;
    }

    is a(qy qy, qy qy1, PrintWriter printwriter)
    {
        return this;
    }

    abstract void a(DataOutputStream dataoutputstream)
        throws IOException;

    void a(DataOutputStream dataoutputstream, Hashtable hashtable)
        throws IOException
    {
        a(dataoutputstream);
    }

    private static char[] z(String str) {
        char ac[] = str.toCharArray();
        int clen = ac.length;
        if (clen >= 2)
            return ac;
        ac[0] ^= 9;
        return ac;
    }

    private static String z(char[] chs) {
        for (int i = 0; i < chs.length; i++) {
            byte key = 0;
            switch (i % 5) {
                case 0:
                    key = 0x6b;
                    break;
                case 1:
                    key = 96;
                    break;
                case 2:
                    key = 84;
                    break;
                case 3:
                    key = 79;
                    break;
                default:
                    key = 9;
                    break;
            }
            chs[i] ^= key;
        }
        return new String(chs).intern();
    }

    static 
    {
        String as[] = new String[5];
        as[0] = z(z("L@5;)"));
        as[1] = z(z("L@=<)\b\017&=|\033\024zo]\n\007th"));
        as[2] = z(z("K\t'o`\005\0265#`\017"));
        as[3] = z(z("(\f5<zK\006=#lKG"));
        as[4] = z(z("0="));
        z = as;
        d = new Hashtable(17);
        d.put("B", z(z("\t\031 *")));
        d.put("C", z(z("\b\b5=")));
        d.put("D", z(z("\017\017!-e\016")));
        d.put("F", z(z("\r\f;.}")));
        d.put("I", z(z("\002\016 ")));
        d.put("J", z(z("\007\017:(")));
        d.put("S", z(z("\030\b;=}")));
        d.put("Z", z(z("\t\017;#l\n\016")));
        d.put("V", z(z("\035\017=+")));
    }
}